import axios from "axios";
import { MessageBox, Message } from "element-ui";
import store from "@/store";

import { getToken, getTime } from "@/utils/auth";

const timeOut = 3600;
import router from "@/router";
// import Vue from "vue";

// create an axios instance
//console.log(process.env.VUE_APP_BASE_API, 7777);
const service = axios.create({
  //baseURL: "http://ihrm-java.itheima.net",
  baseURL: process.env.VUE_APP_BASE_API,
  //baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // withCredentials: true, // send cookies when cross-domain requests
  timeout: 5000 // request timeout
});

// 添加请求拦截器
service.interceptors.request.use(
  async function(config) {
    //console.log(store.dispatch("user/logout"), 888);
    //console.log(Vue, 344555);
    if (getToken()) {
      //  存在  就发请求
      //  判断是否有token
      // 在发送请求之前做些什么  携带请求头
      config.headers["Authorization"] = "Bearer " + getToken();
      //config.headers["Authorization"] = `Bearer ${getToken()}`;
      // if (tt()) {
      //   await store.dispatch("user/logout"); //清除token
      //   window.location.href = "/";
      // }
      if (tt()) {
        await store.dispatch("user/logout"); //清除token
        //window.location.href = "/";
        router.push("/login");
      }
    }
    //  返回登录页
    return config;
  },
  async function(error) {
    //console.log(11);
    // 对请求错误做些什么
    // if (
    //   error.response &&
    //   error.response.data &&
    //   error.response.data.code === 10002
    // ) {
    //   // //  说明token过期了
    //   // const currentTime = Date.now(); //当前报异常获取的时间戳
    //   // const oldTime = getTime(); //  登录成功时设置使得时间戳
    //   // const flag = (currentTime - oldTime) / 1000 > timeOut ? true : false;
    //   // if (flag) {
    //   //   //  表示已经过期了  回登录页面
    //   //   // window.location.href='/login'
    //   //   store.dispatch("user/logout");
    //   // }

    return Promise.reject(error);
  }
);

// 添加响应拦截器
service.interceptors.response.use(
  async function(response) {
    //console.log(response, 4455677);
    const { success, message, data, code } = response.data;
    if (code == 10002) {
      await store.dispatch("user/logout"); //清除token
      //window.location.href = "/";
      router.push("/login");
    }
    //console.log(response.data, 112233);
    // 对响应数据做点什么
    if (success) {
      return data; //  这里返回的是 token值 类似之前的res.data.data
    } else {
      // 业务已经错误了 还能进then ? 不能 ！ 应该进catch
      Message.error(message); // 提示错误消息
      return Promise.reject(new Error(message));
    }
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

function tt() {
  //  说明token过期了
  const currentTime = Date.now(); //当前报异常获取的时间戳
  const oldTime = getTime(); //  登录成功时设置使得时间戳
  return (currentTime - oldTime) / 1000 > timeOut ? true : false;
}

export default service;
